<meta charset="utf-8">

<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
<style>
h1,
h2,
h3,
h4,
h5,
h6,
p,
blockquote {
    margin: 0;
    padding: 0;
}
body {
    font-family: "Helvetica Neue", Helvetica, "Hiragino Sans GB", Arial, sans-serif;
    font-size: 13px;
    line-height: 18px;
    color: #737373;
    background-color: white;
    margin: 10px 13px 10px 13px;
}
table {
    margin: 10px 0 15px 0;
    border-collapse: collapse;
}
td,th { 
    border: 1px solid #ddd;
    padding: 3px 10px;
}
th {
    padding: 5px 10px;  
}

a {
    color: #0069d6;
}
a:hover {
    color: #0050a3;
    text-decoration: none;
}
a img {
    border: none;
}
p {
    margin-bottom: 9px;
}
h1,
h2,
h3,
h4,
h5,
h6 {
    color: #404040;
    line-height: 36px;
}
h1 {
    margin-bottom: 18px;
    font-size: 30px;
}
h2 {
    font-size: 24px;
}
h3 {
    font-size: 18px;
}
h4 {
    font-size: 16px;
}
h5 {
    font-size: 14px;
}
h6 {
    font-size: 13px;
}
hr {
    margin: 0 0 19px;
    border: 0;
    border-bottom: 1px solid #ccc;
}
blockquote {
    padding: 13px 13px 21px 15px;
    margin-bottom: 18px;
    font-family:georgia,serif;
    font-style: italic;
}
blockquote:before {
    content:"\201C";
    font-size:40px;
    margin-left:-10px;
    font-family:georgia,serif;
    color:#eee;
}
blockquote p {
    font-size: 14px;
    font-weight: 300;
    line-height: 18px;
    margin-bottom: 0;
    font-style: italic;
}
code, pre {
    font-family: Monaco, Andale Mono, Courier New, monospace;
}
code {
    background-color: #fee9cc;
    color: rgba(0, 0, 0, 0.75);
    padding: 1px 3px;
    font-size: 12px;
    -webkit-border-radius: 3px;
    -moz-border-radius: 3px;
    border-radius: 3px;
}
pre {
    display: block;
    padding: 14px;
    margin: 0 0 18px;
    line-height: 16px;
    font-size: 11px;
    border: 1px solid #d9d9d9;
    white-space: pre-wrap;
    word-wrap: break-word;
}
pre code {
    background-color: #fff;
    color:#737373;
    font-size: 11px;
    padding: 0;
}
sup {
    font-size: 0.83em;
    vertical-align: super;
    line-height: 0;
}
* {
    -webkit-print-color-adjust: exact;
}
@media screen and (min-width: 914px) {
    body {
        width: 854px;
        margin:10px auto;
    }
}
@media print {
    body,code,pre code,h1,h2,h3,h4,h5,h6 {
        color: black;
    }
    table, pre {
        page-break-inside: avoid;
    }
}
</style>

<h1>Lock - STC89C52单片机实现的密码锁</h1>

<h2>配置</h2>

<ul>
<li><p>1602屏幕 - LCD1602.h</p>

<p>可配置的项目：</p>

<ul><li>数据Port (<code>LCD1602_Port</code>)  </li>
<li>RS, RW, EN连接的位 (<code>LCD1602_RS</code>, <code>LCD1602_RW</code>, <code>LCD1602_EN</code>)  </li></ul></li>
<li><p>文本素材 - assets.c</p>

<p>可配置的项目：</p>

<ul><li>各种字符串，注意加上附加的内容后不要超过16个字符</li>
<li>AB键图标 (<code>GRAPH_KEYA</code>, <code>GRAPH_KEYB</code>)</li></ul></li>
<li><p>键盘 - keyboard.h</p>

<p>可配置的项目：</p>

<ul><li>键盘Port (<code>KBD_Port</code>)</li>
<li>键盘去抖时间 (<code>KBD_DEBOUNCE_TIME</code>)（设为x，去抖时间<code>x / CLOCK_PER_SEC</code>秒）</li>
<li>AB键位置 (<code>KEY_A</code>, <code>KEY_B</code>)</li></ul></li>
<li><p>系统时间相关 - delay.h</p>

<p>可配置的项目：</p>

<ul><li>系统时钟频率 (<code>SYS_CLOCK</code>)（除以12）</li>
<li>每秒中断次数 (<code>CLOCK_PER_SEC</code>)（不需修改）</li></ul></li>
<li><p>LED，蜂鸣器相关 - led.h</p>

<p>可配置的项目：</p>

<ul><li>蜂鸣器端口，位（<code>SPK_PORT</code>, <code>SPK_BIT</code>）</li>
<li>LED端口，红绿对应的位（<code>LED_PORT</code>, <code>LED_RED</code>, <code>LED_GREEN</code>）</li>
<li>解锁失败和成功的蜂鸣器频率 (<code>TUNE_RIGHT</code>, <code>TUNE_WRONG</code>)</li>
<li>LED和蜂鸣器运行时间 (<code>LEDSPK_TIME</code>)</li></ul></li>
<li><p>杂项相关 - main.c</p>

<ul><li>最大密码长度 (<code>MAX_PWD_LEN</code>)</li>
<li>最多重试次数 (<code>MAX_REMAIN_TRY</code>)</li>
<li>重试超过次数之后的冷却时间 (<code>DELAY_TIME</code>) <br>
（重试超过之后，等待这么多时间可以再试一次，重启无效）</li>
<li>输入密码时，无操作自动取消的时间 (<code>TIMEOUT_TIME</code>)</li>
<li>消息的显示时间 (<code>MESSAGE_TIME</code>) <br>
（显示消息时可以按任意键跳过）</li>
<li>解锁后无操作自动锁定的时间 (<code>AUTOLOCK_TIME</code>)</li></ul></li>
</ul>

<h2>提示</h2>

<ul>
<li><p>可能要选择UTF-8无BOM模式才能正确显示中文（Edit - Configuration, Encoding - Encode in UTF-8 without signature）</p></li>
<li><p>eeprom.c中有EEPROM存放数据的布局</p></li>
<li><p>eeprom_data.bin为示范EEPROM文件，有5次尝试机会，密码为空（直接按A键解锁）</p></li>
</ul>


